#!/home/joshua/.pyenv/versions/django/bin/python3
"""
二十二、写一个命令行工具，利用Django 数据库来存储信息
要求：

    1. 通过vim来编辑文档
    2. 文档的第一行作为标题
    3. 文档的第二行是一个空行
    4. 空行之后的所有内容为文档的正文
    5. 把文档标题，正文，当前时间作为记录的三个字段，存储在Django的数据库中
    6. 完成后可以通过这样的命令从命令行启动：

        ./note
"""

import sys
import os
import tempfile
from os.path import realpath, dirname, join

import django


def initialize():
    dir = join(dirname(realpath(__file__)), STORE_DIR)
    sys.path.insert(0, dir)
    os.environ['DJANGO_SETTINGS_MODULE'] = SETTINGS_MODULE
    django.setup()


def edit():
    f = tempfile.NamedTemporaryFile('w+')
    os.system('vim %s' % f.name)
    f.seek(0)
    data = f.read()
    f.close()
    return data


def split(text):
    lines = text.splitlines()
    subject = lines[0]
    lines = lines[2:]
    content = '\n'.join(lines)
    return subject, content


STORE_DIR = 'store'
SETTINGS_MODULE = 'store.settings'


if __name__ == '__main__':
    # 初始化Django存储环境
    initialize()
    from note.models import Note

    # 打开编辑器开始编辑
    text = edit()

    # 处理编辑好的内容，抽出标题和正文
    subject, content = split(text)

    # 保存数据
    Note.objects.create(subject=subject, content=content)
